Gestión de tablas de datos
Encuentro 3
La etapa de depuración o limpieza de datos comienza con la exploración inicial y el diagnóstico adecuado de cada variable de interés de la tabla de datos cruda. Interviene aquí también, el objetivo del análisis, el protocolo de análisis pensado y el diccionario de datos asociado a la tabla.
Finalmente se hacen las transformaciones necesarias en los datos a partir del diagnóstico realizado.
Detección de errores
Identificación de las categorías de las variables cualitativas
Análisis de los mínimos y máximos de valores de cada variable cuantitativa
La exploración de datos se puede incluir dentro del análisis exploratorio de datos (EDA en inglés) y persigue un primer grupo de objetivos:
Habitualmente hablamos de calidad de los datos en relación a los items anteriores.
Una segunda etapa nos va servir para conocer la distribución de las variables de interés a partir de:
Vamos a trabajar con dos paquetes especiales que nos permiten hacer este trabajo, aunque dentro del universo de librerías de R vamos a encontrar muchos mas.
skimr
Está diseñado para obtener un resumen rápido de la estructura de tablas de datos y es compatible con el ecosistema tidyverse.
dlookr
Se define como una colección de herramientas que permiten el diagnóstico, la exploración y la transformación de datos. El diagnóstico de datos proporciona información y visualización de valores faltantes, valores atípicos y valores únicos y negativos para ayudarle a comprender la distribución y la calidad de sus datos.
Otro de los problemas con los debemos lidiar muchas veces es tener observaciones duplicadas.
Las tareas habituales en estos casos son:
Las observaciones duplicadas pueden ser completas, generalmente a raíz de algún problema informático o bien parcial.
Habitualmente nuestras tablas tienen identificadores únicos de las unidades de análisis o una serie de identificadores que resultan en una clave combinada.
La función get_dupes() del paquete janitor es una herramienta útil para identificar estas repeticiones.
Para eliminar filas duplicadas en una tabla de datos podemos utilizar la función distinct() de dplyr.
distinct() muestra observaciones únicas a partir de la coincidencia total o parcial.
La función tiene un argumento denominado .keep_all que permite valores TRUE o FALSE. Si se iguala a TRUE se mantienen en el resultado todas las variables que son parte de la tabla, aunque estas no estén declaradas dentro del distinct().
Por defecto, este argumento se encuentra igualado a FALSE.
Recortar es similar a filtrar, la diferencia está en que se filtra por condiciones y recortamos por posiciones.
La familia de funciones que se puede utilizar para recortar es slice_*().
Estas funciones pueden ser muy útiles si se aplican a un dataframe agrupado porque la operación de recorte se realiza en cada grupo por separado.
Por ejemplo, si en una tabla hay varias filas por persona con fechas distintas de un seguimiento y queremos quedarnos con la última visita, podemos utilizar combinado group_by() y slice_max() para quedarnos sólo con esa observación del último encuentro para cada uno.
Si lo que buscamos es mantener a todas las observaciones de la tabla pero marcar aquellos que consideramos duplicados podemos hacer:
Recortar el dataframe original a sólo las filas para el análisis. Guardar los ID de este dataframe reducido en un vector.
En el dataframe original, creamos una variable de marca usando case_when(), basándonos si el ID está presente en el dataframe reducido (vector de ID anterior).
Llamamos tidy data o “datos ordenados” cuando:
Una variable se extiende por varias columnas.
Una observación está dispersa entre múltiples filas
Solución:
Usamos funciones pivot del paquete tidyr de tidyverse
Función pivot_longer() - Convierte nombres de variables en valores de una nueva variable.
Función pivot_wider() - Convierte valores de una variable en variables nuevas.
pivot_longer()Soluciona cuando una variable se extiende por varias columnas (las categorías estan en la cabecera).
Produce tablas “alargando” los datos, aumentando el número de filas y disminuyendo el número de columnas
pivot_wider()Soluciona cuando una observación está dispersa entre múltiples filas.
Produce tablas “estirando” los datos, aumentando el número de columnas y disminuyendo el número de filas.
Instituto Nacional de Epidemiología